Combine two dictionaries adding values for common keys

D = Counter(D1) + Counter(D2)

Combine two dictionaries adding values for common keys.
D1 = {‘a’: 100, ‘b’: 200, ‘c’:300}
D2 = {‘a’: 300, ‘b’: 200, ‘d’:400}
Sample output:
Counter({‘a’: 400, ‘b’: 400, ‘d’: 400, ‘c’: 300})
def combine_two_dict_coll(D1, D2):

    from collections import Counter

    return dict(Counter(D1) + Counter(D2))
def combine_two_dict(D1, D2):
    new_dict = {}
    for k1, k2 in zip(D1, D2):
        # print("Keys: ", k1, "and", k2)
        if k1 == k2:
            new_dict[k1] = D1[k1] + D2[k2]
        else:
            new_dict[k1] = D1[k1]
            new_dict[k2] = D2[k2]
    return new_dict
# no order
def combine_two_dict_01(D1, D2):
    new_dict = {}
    for k1 in D1.keys():
        for k2 in D2.keys():
            if k1 == k2:
                new_dict.update({k2: D1[k2] + D2[k1]})
            else:
                new_dict.update({k1:D1[k1], k2:D2[k2]})
    return new_dict

Test:

D1 = {'a': 100, 'b': 200, 'c':300}
D2 = {'a': 300, 'b': 200, 'd':400}

print(combine_two_dict_coll(D1, D2))    # {'a': 400, 'b': 400, 'c': 300, 'd': 400}
print(combine_two_dict(D1, D2))         # {'a': 400, 'b': 400, 'c': 300, 'd': 400}
print(combine_two_dict_01(D1, D2))      # {'a': 300, 'b': 200, 'd': 400, 'c': 300}